#include<iostream>
#include<fstream>
#include <string>

using namespace std;

struct Pixel{
	float r;
	float g;
	float b;
};

class Image{
	private:
		int cols;
		int rows;
		string magicNumber;
		int maxVal;
		Pixel** imageArr;

	public:
		Image(int Numcols, int Numrows, string mNumber, int maxValue);
		Image();
		Image(const Image& );
		~Image();
		Image& operator = (const Image& rhs);
		bool operator ==(const Image& rhs);
		int getCols(){return cols;};
		int getRows(){return rows;};
		Pixel getPixel(int row, int col){return imageArr[row][col];};
		void setPixel(Pixel set, int row, int col){imageArr[row][col] = set;};
		friend Image flippedArrayHoriz(Image image);
		friend Image flippedArrayVertical(Image image);
		friend Image enlarge(Image image);
		friend Image shrink(Image image);
		friend Image rotate90(Image image);
		friend Image rotate270(Image image);
		friend Image rotate180(Image image);
		friend void Split(Image image, string name);
		friend Image changeBrightness(Image image);
		friend Image changeContrast(Image image);
		friend Image alphaBlend(Image image);
		friend void processColor(string name);
};
